lexer grammar AnalizadorGDLLexer;

options {
  language = Java;
}
@header {package PL.practica6;}


@members{

ArrayList <RecognitionException> errores = new ArrayList<RecognitionException>();

public boolean listaVacia (){
    if (errores.isEmpty()){
      return true;
    }else
      return false;
}

public ArrayList getListaErrores(){return errores;}


@Override
public void reportError (RecognitionException e){
  System.out.println (getErrorMessage(e, getTokenNames()));
  errores.add(e);
}

}

  GRAPH : 'graph';
  NODE : 'node';
  EDGE : 'edge';
  TITLE : 'title';
  LABEL : 'label';
  SOURCE : 'source';
  TARGET : 'target';
  NODESTYLE : 'solid' | 'dotted' | 'dashed';
  EDGESTYLE : 'line' | 'none' | 'solid';
  BORDERSTYLE : 'borderstyle';
  ARROWSTYLE : 'arrowstyle';
  fragment NUEVA_LINEA: '\r\n' ;
  fragment LETRA : ('a'..'z')|'_';
  BLANCO: (' '|'\t'|NUEVA_LINEA) {skip();};
  COMENTARIOlINEA : '//' (options {greedy=false;}:.)* NUEVA_LINEA {skip();};
  fragment DIGITO: '0'..'9';
  NUMERO: (DIGITO)+('.'(DIGITO)+)?;
  IDENT : LETRA(LETRA|DIGITO)*;
 CADENA : '"' (options {greedy=false;}:.)* '"';
  DOSPUNTOS : ':';
  ABRIRLLAVE : '{';
  CERRARLLAVE : '}';